#include <stdio.h>
#define N 20

int showArr(int a[][N])
{
	int i=0,j=0;
	for(i=0;i<N;++i)
	{
		for(j=0;j<N;++j)
			printf("%-4d ",a[i][j]);
		printf("\n");
	}
	return 0;
}

int showRow(int a[][N])
{
	int i=0,j=0;
	for(i=0;i<N;++i)
	{
		for(j=0;j<N;++j)
			printf("%-4d ",a[i][j]);
		printf("\n");
	}
	return 0;
}

int showDiagonal1(int a[][N])
{
	int i=0,j=0;
	for(i=0;i<N*2;++i)
	{
		int sum = i;
		int k=0;
		for(j=0;j<=sum;++j)
		{
			k = sum-j;
			if(j<N&&k>=0&&k<N)
				printf("%-3d ",a[j][k]);
		}
		printf("\n");
	}
	return 0;
}

int showDiagonal2(int a[][N])
{
	int i=0,j=0;
	for(i=-(N-1);i<N;++i)
	{
		int sum = i;
		int k=0;
		for(j=N-1;j>=0;--j)
		{
			k = j+sum;
       		if(j<N&&k>=0&&k<N)
				printf("%-3d ",a[j][k]);
		}
		printf("\n");
	}
	return 0;
}

int showList(int a[][N])
{
	int i=0,j=0;
	for(i=0;i<N;++i)
	{
		for(j=0;j<N;++j)
			printf("%-4d ",a[j][i]);
		printf("\n");
	}
	return 0;
}

int main()
{
	int a[N][N]={};
	int t=0;
	int i=0,j=0;

	for(i=0;i<N;++i)
	{
		for(j=0;j<N;++j)
			a[i][j] = ++t;
	}

	showArr(a);

/*
	printf("Show row\r\n");
	showRow(a);
*/

//	printf("Show list\r\n");
//	showList(a);

	showDiagonal1(a);

	showDiagonal2(a);
	return 0;
}
